const fs = require('fs');
const protobuf = require('protocol-buffers');
const schemas = protobuf(fs.readFileSync(`${__dirname}/../detail.proto`));
const RPC = require('/rpc-server.js');

const listData = {
  column: {
    id: 232,
    column_cover: "https://static001.geekbang.org/resource/image/42/78/42db8ef7b28bcdc26410141dd97b8178.jpg?x-oss-process=image/resize,m_fill,h_108,w_82",
    column_title: "Node.js开发实战",
    column_subtitle: "带你开发一个完整的Node.js项目",
    author_name: "杨浩",
    author_intro: "腾讯高级工程师",
    column_intro: "<h2>课程背景</h2><p>Node.js 拥有广大的 JavaScript 程序员基础并且完全开源，所以它拥有一个强大的开发者社区。依靠繁荣的社区力量，现在已经发展出成熟的技术体系与庞大的生态。它被广泛地用在 Web服务、开发工作流、客户端应用等诸多领域。其中，在 Web 服务开发这个领域，业界对 Node.js 的接受程度最高。</p>",
    column_unit: "55讲",
    sub_count: 2915,
    update_frequency: '约550分钟',
    column_price: 12900,
    column_price_market: 12900,
    articles: [{
      id: 0,
      is_video_preview: false,
      article_title: "第一课",
    }]
  },
  recommendColumns: [{
    id: 232,
    column_cover: "https://static001.geekbang.org/resource/image/42/78/42db8ef7b28bcdc26410141dd97b8178.jpg?x-oss-process=image/resize,m_fill,h_108,w_82",
    column_title: "Node.js开发实战",
    column_subtitle: "带你开发一个完整的Node.js项目",
    author_name: "杨浩",
    author_intro: "腾讯高级工程师",
    column_intro: "<h2>课程背景</h2><p>Node.js 拥有广大的 JavaScript 程序员基础并且完全开源，所以它拥有一个强大的开发者社区。依靠繁荣的社区力量，现在已经发展出成熟的技术体系与庞大的生态。它被广泛地用在 Web服务、开发工作流、客户端应用等诸多领域。其中，在 Web 服务开发这个领域，业界对 Node.js 的接受程度最高。</p>",
    column_unit: "55讲",
    sub_count: 2915,
    update_frequency: '约550分钟',
    column_price: 12900,
    column_price_market: 12900,
  }, {
    id: 232,
    column_cover: "https://static001.geekbang.org/resource/image/42/78/42db8ef7b28bcdc26410141dd97b8178.jpg?x-oss-process=image/resize,m_fill,h_108,w_82",
    column_title: "Node.js开发实战",
    column_subtitle: "带你开发一个完整的Node.js项目",
    author_name: "杨浩",
    author_intro: "腾讯高级工程师",
    column_intro: "<h2>课程背景</h2><p>Node.js 拥有广大的 JavaScript 程序员基础并且完全开源，所以它拥有一个强大的开发者社区。依靠繁荣的社区力量，现在已经发展出成熟的技术体系与庞大的生态。它被广泛地用在 Web服务、开发工作流、客户端应用等诸多领域。其中，在 Web 服务开发这个领域，业界对 Node.js 的接受程度最高。</p>",
    column_unit: "55讲",
    sub_count: 2915,
    update_frequency: '约550分钟',
    column_price: 12900,
    column_price_market: 12900,
  }]
}

const server = new RPC({
  decodeRequest (buffer) {
    const seq = buffer.readUInt32BE();
    return {
      seq,
      result: schemas.ColumnRequest.decode(buffer.slice(8));
    }
  },
  isCompleteRequest (buffer) {
    const bodyLength = buffer.readUInt32BE(4);
    return 8 + bodyLength;
  },
  encodeResponse (data, seq) {
    const body = schemas.ColumnResponse.encode(data);

    const head = Buffer.alloc(8);
    head.writeUInt32BE(seq);
    head.writeUInt32BE(body.Length, 4);
    return Buffer.concat([head, body]);
  }
})
server.createServer((req, res) => {
  res.end(listData);
}).listen(4000)